package br.com.werp.regras.almoxarifado.integracao;

import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.vos.almoxarifado.AjusteVO;
import br.com.werp.regras.geral.vos.tabelas.Ajuste;

import java.sql.Connection;

import java.util.List;
import java.util.ResourceBundle;


/**
 * @author aledson
 * Criado em 11/11/2005
 */
public class AjusteDAO extends MasterDAO {
    private static AjusteDAO ajusteDAO;

    /**
     * @param banco
     * @throws Exception
     */
    public AjusteDAO(String banco) throws Exception {
        super(banco);
    }

    /**
     *
     * @return
     * @throws Exception
     */
    public static AjusteDAO getAjusteDAO() throws Exception {
        if (ajusteDAO == null) {
            ResourceBundle bundle = ResourceBundle.getBundle(Constantes.CONFIG);
            ajusteDAO = new AjusteDAO(bundle.getString(Constantes.BANCO));
        }

        return ajusteDAO;
    }

    /**
     * @param key
     * @param ajuste
     * @throws Exception
     */
    public void inserirAjuste(Object key, Ajuste ajuste)
        throws Exception {
        Connection connection = validarTransacao(key);
        inserirVO(connection, ajuste, new String[] { "ajus_num" });
    }

    /**
     * @param key
     * @param ajuste
     * @throws Exception
     */
    public void atualizarAjuste(Object key, Ajuste ajuste)
        throws Exception {
        Connection conn = validarTransacao(key);
        atualizarVO(conn, ajuste, new String[] { "ajus_num" });
    }

    /**
     * @param ajusteVO
     * @return
     * @throws Exception
     */
    public List pesquisarAjustes(AjusteVO ajusteVO) throws Exception {
        Connection conn = getConexao();

        try {
            String tabela = "produto_empresa, ajuste, produto ";
            String where = " prem_id = ajus_produto  " +
                " and ajus_produto = prem_id and prod_id = prem_produto";

            if (ajusteVO.getPrem_id() != 0) {
                where += (" and prem_id = " + ajusteVO.getPrem_id());
            }

            if (ajusteVO.getAjus_num() != 0) {
                where += (" and ajus_num=" + ajusteVO.getAjus_num());
            }

            return preencheVO(conn, new AjusteVO(), tabela, where);
        } finally {
            liberaConeccao(conn);
        }
    }
}
